1000 Arc
This is a guide about the 1000 Arc. "What is this?" you may ask? Well, the 1000 Arc is the Architecture all CPU's are currently using, and now you may ask "What is a CPU Architecture?" Well, to put it simply, it is all the systems,registers, and functions that a CPU uses, now, for Paper Programming in P, you can completely ignore this guide, but if you are using Pasm, you NEED to read this to understand how the CPU works. The Point So, you might be wondering, "Why does this mater?" Welp, the point of paper programming is to understand how the game works to play it properly, so, why make it all complicated? Well, Realism and Fun. (Mostly Fun) I just feel it adds more Depth to Paper Game Creation, it's not just Drawing, you have to think about the Systems behind it. Now, that is all fine and dandy, but why Pasm? Well, in case you don't know, Pasm is a Paper Programming Language that looks a little like this: SUB AX,AX MOV ES,AX SUB BH,BH MOV BL,INT_NUMBER SHL BX,1 SHL BX,1 MOV DI,ES:BX MOV ES,ES:BX+2 So, this is pretty much not readable, the only point of Pasm is to make interaction with the CPU and other hardware make sense. The P Programming Language was made in Pasm, in fact. So, you don't need to deal with Pasm at all, that's the point of P, but for madmen like me who ENJOY writing that mess, we will make games with that. Registers Well, Registers are basically addresses that hold data/values. They are always represented by 8 characters strings like this: AFGD0000 Now, these act as variables, but with retarded names, such as "AAFG0000" AND "00000000". Luckily, you can change these (Learn more in the Pasm Guide). Some registers have functions, that if you pass in a certain value, it will activate and it preforms that action. Now, here is the complete list of 1000 Arc Registers: 00000000 - NULL Register, putting data here closes program A0000000 - X Cord Register (Hold's GPU X Cords) AB000000 - X Cord Register (Hold's GPU X Cords) AC000000 - X Cord Register (Hold's GPU X Cords) AD000000 - X Cord Register (Hold's GPU X Cords) AE000000 - Y Cord Register (Hold's GPU X Cords) AF000000 - Y Cord Register (Hold's GPU X Cords) AG000000 - Y Cord Register (Hold's GPU X Cords) AH000000 - Y Cord Register (Hold's GPU X Cords) B0000000 - GPULD (Load Textures through this register) BA000000 - GPULD (Load Textures through this register) BB000000 - GPULD (Load Textures through this register) BC000000 - GPULD (Load Textures through this register) BD000000 - RAM Shift (Shifts to given position in RAM) BE000000 - RAM Shift (Shifts to given position in RAM) BF000000 - RAM Shift (Shifts to given position in RAM) BH000000 - KERNLD (Loads given kernel into memory) C0000000 - Kern (Holds the kernel) CA000000 - GPUSHD (Holds a GPU Shader) CB000000 - Free CC000000 - Free CD000000 - Free CE000000 - Free CF000000 - Free CG000000 - Free CH000000 - Free D0000000 - Free DA000000 - Free DB000000 - Free DC000000 - Free Pretty fun, huh? Welp, time to explain EVERY REGISTER TYPE IN DEPTH: NULL Register - When you put any data in here (Not including a NULL Value), the program will close. X Cord Register - A place to store X Coordinates for the GPU (Note, you can use any others, it's for organizing purposes.) Y Cord Register - A place to store Y Coordinates for the GPU (Note, you can use any others, it's for organizing purposes.) GPULD - If you pass a Texture in and activate the function, it passes the texture to the GPU. Ram Shift - If you pass a RAM Register in and activate the function, it moves it to that register.) KERNLD - If you pass in a .kern file and activate the function, it loads and runs the kernel. Kern - Holds a kernel (Used to store kernel by KERNLD, don't mess with it) GPUSHD - If you pass a .shader and activate the function, it loads and runs the shader. Free - Can hold any value, technically you can in all the others, but these don't have a function with them so it's harder to screw up.